<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //TODO 传统写法
        function fn1(a, b) {
            console.log(a, b); // 1 2
        }
        fn1(1, 2);

        //TODO ES6写法
        function fn2([a, b]) {
            console.log(a, b);
        }
        fn2([3, 4]) // 3 4

        console.log('-------');
        // 函数默认值
        function fn3(a, b) {
            a = a || 1;
            b = b || 2;
            console.log(a, b);
        }
        fn3() // 1 2

        function fn4([a = 1, b = 2]) {
            console.log(a, b);
        }
        fn4([3]) // 3 2


        // 使用对象方式的默认值
        function fn5({ a = 1, b = 2 }) {
            console.log(a, b);
        }
        fn5({ a: 3 }) // 3 2

        /**
         * 使用场景
         * */

        // TODO 传统版
        function ajax(params) {
            var initDefault = {
                async: true,
                type: 'get',
                success: function () { }
            };
            // 参数合并
            for (var k in params) {
                initDefault[k] = params[k];
            }
            console.log(initDefault);
        }
        ajax({ type: 'post' })

        // TODO ES6改造版
        function ajax2({async=true, type='get', success=function(){}}) {
            console.log(async, type, success);
        }
        ajax2({ type: 'post' });
    </script>
</head>

<body>

</body>

</html>